The present invention relates generally to digital video compression, and, more particularly, to a hardware-efficient method of motion estimation in digital video encoders that is simpler, faster, and less expensive than the presently available technology.
Many different compression algorithms have been developed in the past for digitally encoding video and audio information (hereinafter referred to generically as xe2x80x9cdigital video data streamxe2x80x9d) in order to minimize the bandwidth required to transmit this digital video data stream for a given picture quality. Several multimedia specification committees have established and proposed standards for encoding/compressing and decoding/decompressing audio and video information. The most widely accepted international standards have been proposed by the Moving Pictures Expert Group (MPEG), and are generally referred to as the MPEG-1 and MPEG-2 standards. Officially, the MPEG-1 standard is specified in the ISO/IEC 11172-2 standard specification document, which is herein incorporated by reference, and the MPEG-2 standard is specified in the ISO/IEC 13818-2 standard specification document, which is also herein incorporated by reference. These MPEG standards for moving picture compression are used in a variety of current video playback products, including digital versatile (or video) disk (DVD) players, multimedia PCs having DVD playback capability, and satellite broadcast digital video. More recently, the Advanced Television Standards Committee (ATSC) announced that the MPEG-2 standard will be used as the standard for Digital HDTV transmission over terrestrial and cable television networks. The ATSC published the Guide to the Use of the ATSC Digital Television Standard on Oct. 4, 1995, and this publication is also herein incorporated by reference.
In general, in accordance with the MPEG standards, the audio and video data comprising a multimedia data stream (or xe2x80x9cbit streamxe2x80x9d) are encoded/compressed in an intelligent manner using a compression technique generally known as xe2x80x9cmotion codingxe2x80x9d. More particularly, rather than transmitting each video frame in its entirety, MPEG uses motion estimation for only those parts of sequential pictures that vary due to motion, where possible. In general, the picture elements or xe2x80x9cpixelsxe2x80x9d of a picture are specified relative to those of a previously transmitted reference or xe2x80x9canchorxe2x80x9d picture using differential or xe2x80x9cresidualxe2x80x9d video, as well as so-called xe2x80x9cmotion vectorsxe2x80x9d that specify the location of a 16-by-16 array of pixels or xe2x80x9cmacroblockxe2x80x9d within the current picture relative to its original location within the anchor picture. Three main types of video frames or pictures are specified by MPEG, namely, I-type, P-type, and B-type pictures.
An I-type picture is coded using only the information contained in that picture, and hence, is referred to as an xe2x80x9cintra-codedxe2x80x9d or simply, xe2x80x9cintraxe2x80x9d picture.
A P-type picture is coded/compressed using motion compensated prediction (or xe2x80x9cmotion estimationxe2x80x9d) based upon information from a past reference (or xe2x80x9canchorxe2x80x9d) picture (either I-type or P-type), and hence, is referred to as a xe2x80x9cpredictivexe2x80x9d or xe2x80x9cpredictedxe2x80x9d picture.
A B-type picture is coded/compressed using motion compensated prediction (or xe2x80x9cmotion estimationxe2x80x9d) based upon information from either a past and or a future reference picture (either I-type or P-type), or both, and hence, is referred to as a xe2x80x9cbidirectionalxe2x80x9d picture. B-type pictures are usually inserted between I-type or P-type pictures, or combinations of either.
The term xe2x80x9cintra picturexe2x80x9d is used herein to refer to I-type pictures, and the term xe2x80x9cnon-intra picturexe2x80x9d is used herein to refer to both P-type and B-type pictures. It should be mentioned that although the frame rate of the video data represented by an MPEG bit stream is constant, the amount of data required to represent each frame can be different, e.g., so that one frame of video data (e.g., {fraction (1/30)} of a second of playback time) can be represented by x bytes of encoded data, while another frame of video data can be represented by only a fraction (e.g., 5%) of x bytes of encoded data. Since the frame update rate is constant during playback, the data rate is variable.
In general, the encoding of an MPEG video data stream requires a number of steps. The first of these steps consists of partitioning each picture into macroblocks. Next, in theory, each macroblock of each xe2x80x9cnon-intraxe2x80x9d picture in the MPEG video data stream is compared with all possible 16-by-16 pixel arrays located within specified vertical and horizontal search ranges of the current macroblock""s corresponding location in the anchor picture(s). This theoretical xe2x80x9cfull search algorithmxe2x80x9d (i.e., searching through every possible block in the search region for the best match) always produces the best match, but is seldom used in real-world applications because of the tremendous amount of calculations that would be required, e.g., for a block size of Nxc3x97N and a search region of (N+2w) by (N+2w), the distortion function MAE has to be calculated (2w+1)2 times for each block, which is a tremendous amount of calculations. Rather, it is used only as a reference or benchmark to enable comparison of different more practical motion estimation algorithms that can be executed far faster and with far fewer computations. These more practical motion estimation algorithms are generally referred to as xe2x80x9cfast search algorithmsxe2x80x9d.
The aforementioned search or xe2x80x9cmotion estimationxe2x80x9d procedure, for a given prediction mode, results in a motion vector that corresponds to the position of the closest-matching macroblock (according to a specified matching criterion) in the anchor picture within the specified search range. Once the prediction mode and motion vector(s) have been determined, the pixel values of the closest-matching macroblock are subtracted from the corresponding pixels of the current macroblock, and the resulting 16-by-16 array of differential pixels is then transformed into 8-by-8 xe2x80x9cblocks,xe2x80x9d on each of which is performed a discrete cosine transform (DCT), the resulting coefficients of which are each quantized and Huffman-encoded (as are the prediction type, motion vectors, and other information pertaining to the macroblock) to generate the MPEG bit stream. If no adequate macroblock match is detected in the anchor picture, or if the current picture is an intra, or xe2x80x9cI-xe2x80x9d picture, the above procedures are performed on the actual pixels of the current macroblock (i.e., no difference is taken with respect to pixels in any other picture), and the macroblock is designated an xe2x80x9cintraxe2x80x9d macroblock.
For all MPEG-2 prediction modes, the fundamental technique of motion estimation consists of comparing the current macroblock with a given 16-by-16 pixel array in the anchor picture, estimating the quality of the match according to the specified metric, and repeating this procedure for every such 16-by-16 pixel array located within the search range. The hardware or software apparatus that performs this search is usually termed the xe2x80x9csearch engine,xe2x80x9d and there exists a number of well-known criteria for determining the quality of the match. Among the best-known criteria are the Minimum Absolute Error (MAE), in which the metic consists of the sum of the absolute values of the differences of each of the 256 pixels in the macroblock with the corresponding pixel in the matching anchor picture macroblock; and the Minimum Square Error (MSE), in which the metric consists of the sum of the squares of the above pixel differences. In either case, the match having the smallest value of the corresponding sum is selected as the best match within the specified search range, and its horizontal and vertical positions relative to the current macroblock therefore constitute the motion vector. If the resulting minimum sum is nevertheless deemed too large, a suitable match does not exist for the current macroblock, and it is coded as an intra macroblock. For the purposes of the present invention, either of the above two criteria, or any other suitable criterion, may be used.
The various fast search algorithms evaluate the distortion function (e.g., the MAE function) only at a predetermined subset of the candidate motion vector locations within the search region, thereby reducing the overall computational effort. These algorithms are based on the assumption that the distortion measure is monotonically decreasing in the direction of the best match prediction. Even though this assumption is not always true, it can still find a suboptimal motion vector with much less computation.
The most commonly used approach to motion estimation is a hybrid approach generally divided into several processing steps. First, the image can be decimated by pixel averaging. Next, the fast search algorithm operating on a smaller number of pixels is performed, producing a result in the vicinity of the best match. Then, a full search algorithm in a smaller search region around the obtained motion vector is performed. If half-pel vectors are required (as with MPEG-2), a half-pel search is performed as a separate step or is combined with the limited full search.
Even with the great savings that can be achieved in the hybrid approach to motion estimation, an enormous amount of computations still have to be performed for each iteration of computing MAE. Assuming that the distortion function has to be computed every clock cycle for every block offset, which is desirable in demanding applications such as MPEG-2 HDTV where motion block size is 16-by-16, a distortion function computational unit (DFCU) will consist of a number of simpler circuits of increasing bit width starting from 8 (8-bit luminance data is used for motion estimation) to produce MAE. This number will be equal to the sum of the following: 256 subtraction circuits, 256 absolute value compute circuits, 255 summation circuits of increasing bit width, for a total of 757 circuits of increasing bit width starting with 8, per DFCU.
Depending on picture resolution, a number of these extremely complex units will be required for a practical system. Using a smaller number of circuits within a DFCU in order to reuse its hardware is possible, but will substantially increase processing time and may not be acceptable in demanding applications such as HDTV. In this case, the number of DFCUs will simply have to be increased to compensate by enhanced parallel processing.
The first step in the hybrid approach to motion estimation (rough search) is usually the most demanding step in terms of hardware utilization because it has to cover the largest search region in order to produce a reasonably accurate match.
Based on the above and foregoing, there presently exists a need in the art for a method for motion estimation that enhances the speed at which motion estimation can be performed, that greatly reduces the amount and complexity of the motion estimation or DFCU hardware required to perform motion estimation, and that provides for significant picture quality improvement at a reasonable cost. The motion estimation method disclosed by the present inventor in co-pending application Ser. No. 09/287,161, filed concurrently herewith, and entitled xe2x80x9cMotion Estimation Method Using Orthogonal-Sum Block Matchingxe2x80x9d, produces a much smaller amount of data that has to be compared in order to identify a best match, and leads to a substantial reduction in the motion estimation search engine hardware requirements, by searching for best matches by comparing unique macroblock signatures rather than by comparing the individual luminance values of the collocated pixels in the current macroblock and the search region. However, this inventive method does not directly address the problem of accelerating the motion estimation search procedure. The method and device of the present invention directly addresses this problem by extensively reusing the orthogonal sums that are computed for the macroblocks in the search region of the reference picture in order to produce multiple high-quality motion estimation search results in a single try.
The present invention encompasses a method for determining a best match between a first pixel array in a picture currently being encoded and a plurality of second pixel arrays in a search region of a reference picture, wherein each of the first and second pixel arrays includes a plurality R of rows and a plurality C of columns of individual pixel values.
The method includes the steps of providing a first full orthogonal-sum signature of the first pixel array comprised of a set of horizontal sums representative of the sums of the individual pixel values of the rows of the first pixel array and a first set of vertical sums representative of the sums of the individual pixel values of the columns of the first pixel array; providing a plurality of partial orthogonal-sum signatures for respective ones of the plurality of second pixel arrays, each of the plurality of partial orthogonal-sum signatures being comprised of a set of partial horizontal sums representative of the sums of the individual pixel values of a plurality M of the rows of a respective one of the second pixel arrays and a set of partial vertical sums representative of the sums of the individual pixel values of a plurality N of the columns of a respective one of the second pixel arrays, wherein M less than R and N less than C; concurrently computing a plurality of second full orthogonal-sum signatures for the respective ones of the plurality of second pixel arrays using the plurality of partial orthogonal-sum signatures; and, comparing the first full orthogonal-sum signature with each of the second full orthogonal-sum signatures in order to determine the best match between the first and second pixel arrays.
In a presently preferred embodiment, N=Cxe2x88x921, and M=Rxe2x88x921; the set of partial horizontal sums is representative of the sums of the individual pixel values contained in N columns of R+1 rows of an (C+1)-by-(R+1) pixel array that encompasses all of the second pixel arrays, and the set of partial vertical sums is representative of the sums of the individual pixel values contained in M rows of C+1 columns of the (C+1)-by-(R+1) pixel array; the R+1 rows and the C+1 columns collectively comprise the (C+1)-by-(R+1) pixel array that encompasses all of the second pixel arrays; and, the M rows and N columns are centered in the (C+1)-by-(R+1) pixel array, where C can be equal or unequal to R, and M can be equal or unequal to N.
The present invention also encompasses a device, e.g., a motion estimation search engine of a digital video encoder, that implements the method of the present invention.